/*******************************************
  Jose Andres Lara Vecino

  Author       : $$Author: cainlara@gmail.com $$
  Last CheckIn : $$Date: 2012-10-29 19:04:52 +0000 (Mon, 29 Oct 2012) $$
  Revision     : $$Revision: 108 $$
*******************************************/

package dao;

import static utilidad.Util.listaValida;
import generico.GenericoDao;

import java.util.List;

import javax.persistence.Query;

import persistencia.IAtributos;
import persistencia.TmSecuencia;

/**
 * Capa DAO para la utilidad de secuencias.
 * 
 * @author jose.lara 06.06.2012
 */
public final class SecuenciaDao extends GenericoDao<TmSecuencia> {
    private static final long serialVersionUID = 2677171790161331035L;
    
    public SecuenciaDao() {
    }
    
    @SuppressWarnings("unchecked")
    public static long getNextId(String tableName) {
        List<TmSecuencia> lista = null;
        TmSecuencia secuencia   = null;
        Query query             = null;
        String queryString      = null;
        long key                = IAtributos.LLAVE_SIN_GUARDAR;
        
        queryString = "select sec from TmSecuencia sec where sec.nombre like '" + tableName + "'";
        
        query = getEntityManager().createQuery(queryString);
        query.setMaxResults(1);
        lista = query.getResultList();
        
        if(listaValida(lista)) {
            secuencia = lista.get(0); 
            key = secuencia.getValorActual();
            key++;
            secuencia.setValorActual(key);
            getEntityManager().persist(secuencia);
        }
        
        return key;
    }
}
